<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>交融动画效果</title>
  <style>
    * { margin: 0; padding: 0;}
    body {
     background-color: #fff;
    }
    .base {
      height: 100px;
      padding: 30px;
      filter: contrast(1);
    }
    .ball {
      width: 50px;
      height: 50px;
      border-radius: 50%;
      background-color: #0f0;
      filter: blur(10px);
    }
  
  </style>
  <style>
    .footer {
      background-color: #cf1846;
      margin-top: 100px;
      height: 6em;
    }
    .bubbles {
      position: relative;
      bottom: 0;
      left: 0;
      width: 100%;
      height: 2em;
      filter: url(#blob);
      background: inherit;
    }
    .bubble {
      position: absolute;
      --x: 100px;
      --s: 80px;
      --d: 3s;
      border-radius: 50%;
      background: inherit;
      background: #0f0;
      width: var(--s);
      height: var(--s);
      left: var(--x);
      top: 30px;
      animation: bubbling var(--d) ease-in infinite;
      
    }
    @keyframes bubbling {
      form {
        top: 0;
      }
      to {
        top: -300px;
        transform: scale(0);
      }
    }
  </style>
</head>
<body>
  <div class="base">
    <div class="ball"></div>
    <div class="ball"></div>
  </div>
  <hr>
  <svg>
    <filter id="blob" >
      <feGaussianBlur  
        in="SourceGraphic" 
        stdDeviation="3 10"  
        result="blur"/>
      <feColorMatrix 
        in="blur" 
        mode="matrix" 
        values="
          1 0 0 0 0 
          0 1 0 0 0 
          0 0 1 0 0 
          0 0 0 20 -10
        " />
    </filter>
  </svg>
  <div class="footer">
    <div class="bubbles">
      <!-- <div class="bubble"></div> -->
    </div>
  </div>
  <hr>
 
  <section >
    <p>可以应用与图片，文字，整个页面，也可以再鼠标移入时产生效果</p>
    <p>这里是使用 svg 的路径效果，可以参考链接：<a href="https://yoksel.github.io/svg-filters/#/">https://yoksel.github.io/svg-filters/#/</a></p>
    <ol>
      <li>实现交融有多种方式，如css 和 svg 的，这里不考虑css 的</li>
      <li>实现交融有两种方式：基于对比度的交融、基于透明度的交融</li>
      <li>基于对比度的交融: 如：
        <dl>
          <dd>.ball 这两个圆球，在设置了 fillter: blur 后，两个球边缘的地方，出现淡淡的绿色</dd>
          <dd>接着在父元素上设置对比度 filter:contrast(1)，然后再控制台提高对比度，可以发现：颜色变了，该模糊的地方还是模糊</dd>
          <dd>对比度的作用：让亮的越亮，暗的越暗，这里交融的话，不彻底，除非背景是白色的，图片是黑色的</dd>
        </dl>
      </li>
      <li>svg 里面的 filter 可以看作是增强版的 css 滤镜，对filter 元素添加id, 然后css 中 使用 filter: url(filterId) 就能够使用svg滤镜了</li>
      <li>feGaussianBlur 高斯模糊滤镜  attr:  stdDeviation 模糊程度/模糊半径；in 颜色来源， SourceGraphic 元素原本的颜色；result 给通过滤镜得到的颜色起个名字（随便取），用于给后续滤镜传参</li>
      <li>feColorMatrix  attr： values 的每一行相当于  R、G、B、A 进行线性代数运算</li>
    </ol>
  </section>
  <script src="https://cdn.bootcdn.net/ajax/libs/gsap/3.11.5/gsap.js"></script>
  <script>
    const tur = document.querySelector('feTurbulence')


  </script>
</body>
</html>